﻿using CREAPA.RepositorioADO;
using CREAPA.UL.Web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CREAPA.UL.Web.Controllers
{
    public class FuncionarioSetorController : Controller
    {
        FuncionarioSetorRepositorioADO funcionarioSetorADO = new FuncionarioSetorRepositorioADO();

        [Authorize]
        public ActionResult Index(string login)
        {
            if (TempData["Result"] != null)
                ModelState.AddModelError("", "Você não selecionou o Setor");
            //Lista de Setores do Funcionario
            var listaFuncionarioSetor = funcionarioSetorADO.ListarFuncionarioSetor(login);
            ViewBag.listaFuncionarioSetor = listaFuncionarioSetor;
            //Lista de Setores Disponiveis para o Funcionario
            var listaFuncionarioSetorDisponivel = funcionarioSetorADO.ListarFuncionarioSetorDisponivel(login);
            ViewBag.listaFuncionarioSetorDisponivel = listaFuncionarioSetorDisponivel;

            ViewBag.Login = login;
            TempData["Login"] = login;
            TempData.Keep("Login");
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Adicionar()
        {
            var ListaSetorAdd = Request.Form["Selecionar"];
            var login = TempData["Login"];
            TempData.Keep("Login");
            string perm = "";
            int pos = 0;
            if (ListaSetorAdd == null)
            {
                TempData["Result"] = "1";
            }
            else
            {
                do
                {
                    pos = ListaSetorAdd.IndexOf(",");
                    if (pos != -1)
                    {
                        perm = ListaSetorAdd.Substring(0, pos);
                        ListaSetorAdd = ListaSetorAdd.Substring(pos + 1);

                        funcionarioSetorADO.Inserir(login.ToString(), perm);
                    }
                    else//último elemento da lista
                    {
                        funcionarioSetorADO.Inserir(login.ToString(), ListaSetorAdd);
                    }
                }
                while (pos != -1);
            }
            return RedirectToAction("Index", new { Login = login });
        }

        [Authorize]
        public ActionResult Excluir()
        {
            var login = TempData["Login"];
            TempData.Keep("Login");
            ViewBag.Login = login;
            var ListaSetorExcluir = Request.Form["Excluir"];
            if (ListaSetorExcluir == null)
            {
                TempData["Result"] = "1";
                return RedirectToAction("Index", new { Login = login });
            }
            else
            {
                TempData["Excluir"] = ListaSetorExcluir;
                var listaExcluir = funcionarioSetorADO.ListarFuncionarioSetorExcluir(ListaSetorExcluir);
                ViewBag.ListaSetorExcluir = listaExcluir;
                return View();
            }
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult ExcluirConfirmado()
        {
            funcionarioSetorADO.Excluir(TempData["Excluir"].ToString(), TempData["Login"].ToString());
            TempData.Keep("Login");
            return RedirectToAction("Index", new { Login = TempData["Login"].ToString() });
        }
    }
}
